#include <gtest/gtest.h>
#include <unordered_map>
#include <iostream>

/*
    TestSCase事件
    针对的是单元测试（每一个TEST_F）,可以定义成员变量，在单元测试中访问。
    SetUp函数和TearDOwn函数在每个单元测试开始和结束时都会调用
    另外必须使用Test_F宏函数,第一个参数必须和类名一致，这样才能通过类名访问到成员变量

*/

class HashTestEnv1 : public testing::Test
{
public:
    virtual void SetUp() override
    {
        std::cout << "测试前:提前准备数据!!\n";
        dict.insert(std::make_pair("Hello", "你好"));
        dict.insert(std::make_pair("hello", "你好"));
        dict.insert(std::make_pair("雷吼", "你好"));
    }
    virtual void TearDown() override
    {
        std::cout << "测试结束后:清理数据!!\n";
        dict.clear();
    }

public:
    std::unordered_map<std::string, std::string> dict;
};

TEST_F(HashTestEnv1, insert_test)
{
    std::cout << "环境1,insert测试\n";
    auto it = dict.find("hello");
    ASSERT_NE(it, dict.end());
}

TEST_F(HashTestEnv1, sizeof)
{
    std::cout << "环境1,size测试\n";
    ASSERT_GT(dict.size(), 0);
}

int main(int argc, char *argv[])
{
    testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();
}